home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / TextView.h < prev    next >
C/C++ Source or Header  |  1990-11-28  |  5KB  |  151 lines

  1. #ifndef TextView_First
  2. #ifdef __GNUG__
  3. #pragma once
  4. #endif
  5. #define TextView_First
  6.  
  7. #include "StaticTView.h"
  8.  
  9. const int cMaxBatchedIns = 80; // maximum number of batched inserts
  10.  
  11. struct SelPoint {
  12.     int ch;         // char number of a selection point
  13.     int line;       // line number of a selection
  14.     Point viewp;    // position in view coordinates
  15.     bool IsEqual(const SelPoint &s2)
  16.         { return (bool) (ch == s2.ch); }
  17.     
  18. };
  19.  
  20. void SwapSelPoints(SelPoint &p1, SelPoint &p2);
  21.  
  22. //---- TextView -------------------------------------------------------------
  23.  
  24. class TextView: public StaticTextView {
  25. friend class RangeSelector;
  26. friend class ExtendRangeSelector;
  27.  
  28.     //---- selection    
  29.     SelPoint start,end;            // selection range
  30.     bool inTextSelector;
  31.     bool updateSelection;
  32.     char *stopChars; // these characters wont be batched during DoKeyCommand              // if DoKeyCommand is overriden
  33.     class TypeingCommand *Typeing; // current typeing command object
  34.     class FindDialog *findChange;
  35.  
  36. protected:
  37.     void NormSelection();   
  38.     // normalize selection, establisch start < end 
  39.     int FormatInsertedText(int startLine, int startCh, int n);
  40.     // returns the number of inserted lines
  41.     class Text *scratchText;
  42.     int DeleteLines(int from, int to);
  43.     void PrivSetSelection(int s, int e, bool redraw= TRUE);
  44.     void PrivSetSelection(SelPoint s, SelPoint e, bool redraw= TRUE);
  45.     void Init();
  46.     bool Writeable()
  47.     { return (bool) (!TestFlag(eTextViewReadOnly) && Enabled()); }
  48.     virtual int CursorPos(int ch, int line, EvtCursorDir d, Point);
  49.  
  50. public:
  51.     MetaDef(TextView);
  52.  
  53.     TextView(EvtHandler *eh, Rectangle extent, Text *t, eTextJust m= eLeft,
  54.          eSpacing= eOne, bool wrap= TRUE,
  55.          TextViewFlags= eTextViewDefault, 
  56.          Point border= gBorder, int id= cIdNone);    
  57.         // extent.width/height can be set to cFit
  58.  
  59.     ~TextView();
  60.     void InitNew();
  61.  
  62.     void Draw(Rectangle);
  63.     void Invert(int from, Point fp, int to, Point tp);
  64.     void HighlightSelection(HighlightState hs);
  65.     virtual void Reformat();
  66.  
  67.     //---- controller methods 
  68.     Command *DoLeftButtonDownCommand(Point, Token, int);
  69.     Command *DoKeyCommand(int, Point, Token);
  70.     void SetStopChars(char *stopChars);
  71.     // define in a string a list of characters that should not be
  72.     // batched in DoKeyCommand. Has to be used when DoKeyCommand
  73.     // is overridden to intercept carriage returns for instance
  74.     const char *GetStopChars()
  75.     { return stopChars; }
  76.     Command *InsertText(Text *insert); 
  77.     // has the same effect as a sequence of DoKeyCommands -> undoable
  78.     Command *DoCursorKeyCommand(EvtCursorDir, Point, Token);
  79.     Command *DoOtherEventCommand(Point p, Token t);
  80.     Command *DoIdleCommand();
  81.     void DoCreateMenu(class Menu *);
  82.     void DoSetupMenu(class Menu *);
  83.     Command *DoMenuCommand(int);
  84.     void SendDown(int, int, void*);
  85.     void Enable(bool b= TRUE, bool redraw= TRUE);
  86.     GrCursor GetCursor(Point);
  87.  
  88.     //---- selection ----
  89.     void InvalidateSelection();
  90.     void SetSelection(int s= 0, int e= cMaxInt, bool redraw = TRUE);
  91.     void SetNoSelection(bool redraw = TRUE);
  92.     void GetSelection(int *s, int *e)
  93.     { *s = start.ch; *e = end.ch; } // if no selection s and e are set to -1
  94.     void SelectionAsString(byte *, int max);
  95.     Text *SelectionAsText();
  96.     Rectangle SelectionRect();
  97.     void RevealSelection();
  98.     bool InTextSelector()
  99.     { return inTextSelector; }
  100.     virtual void Home();
  101.     virtual void Bottom();
  102.     bool Caret()
  103.     { return (bool) (start.ch == end.ch); }
  104.     bool AnySelection()
  105.     { return (bool) (start.ch != -1); }
  106.     virtual void SelectAll();
  107.     virtual void DrawCaret(Point p, int line, HighlightState);
  108.     
  109.     //---- clipboard --------------------
  110.     bool HasSelection();
  111.     void SelectionToClipboard(char*, ostream &os);
  112.     Command *PasteData(char*, istream &s);
  113.     bool CanPaste(char *type);
  114.  
  115.     //---- editing and screen update 
  116.     virtual void Cut();            
  117.     virtual void DelChar(int n=1);
  118.     virtual bool DeleteRequest(int from, int to);
  119.     // called before deleting the text in the range from, to
  120.     // a return value of FALSE indicates a veto, and the text will not be
  121.     // deleted 
  122.     virtual void Copy(Text *save);
  123.     virtual void Paste(Text *insert);
  124.     Text *SetText(Text *);     // returns old text       
  125.     void SetString(byte *str, int len);    
  126.     void StartFormatting();
  127.  
  128.     void SetReadOnly(bool);
  129.     bool GetReadOnly();
  130.     
  131.     //---- searching 
  132.     virtual FindDialog *MakeFindDialog();
  133.     virtual bool SelectRegExpr(class RegularExp *rex, bool forward= TRUE);
  134.     
  135.     //----- Command Notification
  136.     void DoneTypeing();  // notify typeing command    
  137.     void TypeingDeleted();
  138.     
  139.     //----- change notification from the text object
  140.     void DoObserve(int, int part, void*, Object *op);
  141.     bool PrintOnWhenObserved(Object *from);
  142.  
  143.     //---- activation passivation ----------------------------------------------
  144.     istream& ReadFrom(istream &);
  145.  
  146.     //----- debugging
  147.     void Dump();
  148. };
  149.  
  150. #endif TextView_First     
  151.